#include <stdio.h>
#include <signal.h>

volatile int g_val = 0;  //保存内存可见性 不让变量存放到寄存器中

void handler(int sig)
{
    (void)sig;
    printf("change g_val:0->1\n");
    g_val = 1;
}
int main()
{
    signal(2, handler);
    while (!g_val); //编译器会默认对我们的代码进行优化  将g_val放在寄存器中保存 
    printf("quit normaly...\n");
}